package com.example.app3;  // 必须添加：声明当前类所在的包

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.FileProvider;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.View;
import android.widget.ImageView;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SecondActivity3 extends AppCompatActivity {

    private static final int REQUEST_IMAGE_CAPTURE = 1;
    private String currentPhotoPath;
    private ImageView ivPhoto;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second3);  // 确保布局文件存在

        ivPhoto = findViewById(R.id.iv_photo);  // 布局中需有id为iv_photo的ImageView
        // 点击事件使用lambda（需项目支持Java 8，若报错可改为匿名内部类）
        findViewById(R.id.btn_take_photo).setOnClickListener(v -> dispatchTakePictureIntent());
    }

    // 调用相机
    private void dispatchTakePictureIntent() {
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        // 检查是否有相机应用
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            File photoFile = null;
            try {
                photoFile = createImageFile();  // 创建临时图片文件
            } catch (IOException ex) {
                // 可添加错误提示，例如Toast.makeText(this, "创建文件失败", Toast.LENGTH_SHORT).show();
            }
            if (photoFile != null) {
                // 通过FileProvider获取图片Uri（适配Android 7.0+）
                Uri photoURI = FileProvider.getUriForFile(this,
                        getPackageName() + ".fileprovider",  // 与Manifest中authorities一致（com.example.app3.fileprovider）
                        photoFile);
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);  // 指定照片保存路径
                startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);  // 启动相机
            }
        }
    }

    // 创建图片文件（保存到应用私有目录，无需额外权限）
    private File createImageFile() throws IOException {
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());  // 时间戳作为文件名
        String imageFileName = "JPEG_" + timeStamp + "_";
        File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);  // 应用私有图片目录
        File image = File.createTempFile(
                imageFileName,  // 文件名前缀
                ".jpg",         // 后缀
                storageDir      // 保存目录
        );
        currentPhotoPath = image.getAbsolutePath();  // 保存图片路径
        return image;
    }

    // 接收相机返回的照片并显示
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // 确认是相机返回且成功
        if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
            // 根据路径加载图片并显示
            Bitmap bitmap = BitmapFactory.decodeFile(currentPhotoPath);
            ivPhoto.setImageBitmap(bitmap);
        }
    }
}